package com.zhiyou.java;

/**
 * 多线程的创建,方式一: 继承于Thread类
 * 1. 创建一个继承于Thread类的子类
 * 2. 重写Thread 类的run() --> 将此线程执行的操作声明在run()中
 * 3. 创建Thread类的子类的对象
 * 4. 通过此对象调用start()
 *
 * 例子 遍历100以内的所有偶数
 */
//创建一个继承于Thread类的子类
class MyThread extends Thread{
    //重写run方法
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            if (i % 2 == 0){
                System.out.println(Thread.currentThread().getName()+":" +i);
            }
        }
    }
}

public class ThreadTest {
    public static void main(String[] args) {
        //3. 创建Thread类的子类对象
        MyThread m1 = new MyThread();

        //4. 通过此对象调用start()  ; 1.启动当前线程 2.调用当前线程的run()
        m1.start();
        //问题一: 我们不能通过直接调用run()的方法启动线程.
        m1.run();



        //问题二 :再启动一个线程,遍历一百以内的偶数. 不可以还让已经start()的线程去执行,会报IllegalThreadStateException异常.
//        m1.start();
        //我们需要重新创建一个线程对象,调用start()方法.
        MyThread m2 = new MyThread();
        m2.start();

        //如下的操作仍然是在main线程中执行的.
        for (int i = 0; i < 100; i++) {
            if (i % 2 == 0){
                System.out.println(Thread.currentThread().getName()+":" +i+"***************************");
            }
        }


    }
}
